﻿using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using webapi.Models;
using webapi.Models.Database;

namespace webapi.Controllers
{
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class UserController : ControllerBase
    {
        // 构造方法注入
        private readonly CnewsContext _context;
        public UserController(CnewsContext context)
        {
            _context = context;
        }

        // 查询数据库中所有用户信息
        // 请求方法POST
        /// <summary>
        /// 查询所有用户
        /// </summary>
        [HttpPost]
        //GetUsers方法
        public List<User> GetUsers()
        {
            return _context.Users.ToList();
        }

        // 请求方法POST
        /// <summary>
        /// 用户注册
        /// </summary>
        [HttpPost]
        //AddUser方法
        //User为Models/Database/User.cs中的类
        //user为前端传递的参数
        public string AddUser(AddUserRequests user)
        {
            if (!ModelState.IsValid)
            {
                return "参数错误";
            }
            //判断数据库中是否存在该用户
            if (_context.Users.Where(u => u.UserName == user.UserName).Count() > 0)
            {
                return "用户已存在,请更换用户名后重试";
            }
            // 生成随机数作为用户id
            Random random = new Random();
            var model = new User();
            model.UserName = user.UserName;
            model.UserPassword = user.Password;
            model.UserId = random.Next(1, 999);
            _context.Users.Add(model);
            // 判断是否添加成功
            if (_context.SaveChanges() > 0)
            {
                return "用户添加成功";
            }
            return "用户添加失败";
        }

        // 用户登录
        // 请求方法POST
        /// <summary>
        /// 用户登录
        /// </summary>
        [HttpPost]
        //Login方法
        //User为Models/Database/User.cs中的类
        //user为前端传递的参数
        public string Login(User user)
        {
            // 判断数据库中是否存在该用户
            if (_context.Users.Where(u => u.UserName == user.UserName).Count() == 0)
            {
                return "用户不存在";
            }
            // 判断密码是否正确
            if (_context.Users.Where(u => u.UserName == user.UserName).First().UserPassword != user.UserPassword)
            {
                return "密码错误";
            }
            var userinfo = _context.Users.Where(u => u.UserName == user.UserName);
            // 返回账号信息
            return "登录成功,用户id为" + userinfo.First().UserId + ",用户名为" + userinfo.First().UserName;
        }
    }
}
